package routers

import (
	"gitee.com/xianglinzeng/gwayne/controllers/kubernetes/proxy"
	"gitee.com/xianglinzeng/gwayne/middleware"
	"github.com/gin-gonic/gin"
)

func SetupKubernetesProxyResourcesRoutes(rg *gin.RouterGroup) {
	// /apps/:appid([0-9]+)/_proxy/clusters/ 路由
	// For Kubernetes resource router
	// appid used to check permission
	proxyResourceGroup := rg.Group("/apps/:appid([0-9]+)/_proxy/clusters/:cluster").Use(middleware.JWTauth())
	{
		// 不带 namespace 的资源
		// 获取 kind 资源列表
		proxyResourceGroup.GET("/:kind", proxy.List)
		// 创建kind
		proxyResourceGroup.POST("/:kind", proxy.Create)
		//  获取指定 kind
		proxyResourceGroup.GET("/:kind/:name", proxy.Get)
		// update
		proxyResourceGroup.PUT("/:kind/:name", proxy.Put)
		proxyResourceGroup.DELETE("/:kind/:name", proxy.Delete)

		// namespaces 为kind时，获取所有 namespaces 列表和详情
		proxyResourceGroup.GET("/namespaces", proxy.NamespacesList)

		// 获取所有 namespaces名称
		proxyResourceGroup.GET("/namespaces/names", proxy.GetNames)

		proxyResourceGroup.POST("/namespaces", proxy.NamespacesCreate)                  // 创建namespace
		proxyResourceGroup.GET("/namespaces/:namespaceName", proxy.NamespacesGet)       // 获取指定namespace
		proxyResourceGroup.POST("/namespaces/:namespaceName", proxy.NamespacesPut)      // update 指定namespace
		proxyResourceGroup.DELETE("/namespaces/:namespaceName", proxy.NamespacesDelete) // Delete 指定namespace

		// 带 namespace 的资源
		proxyResourceGroup.GET("/namespaces/:namespaceName/:kind", proxy.List)
		proxyResourceGroup.GET("/namespaces/:namespaceName/:kind/:name", proxy.Get)

	}

	/*proxyResourceNamespaceSGroup := rg.Group("/apps/:appid([0-9]+)/_proxy/clusters/:cluster/namespaces").Use(middleware.JWTauth())
	{
		// namespaces 为kind时，获取所有 namespaces 列表
		proxyResourceNamespaceSGroup.GET("", proxy.List)
		// 创建namespace
		proxyResourceNamespaceSGroup.POST("", proxy.Create)
		// 获取指定namespace
		proxyResourceNamespaceSGroup.GET("/:name", proxy.Get)
		// update 指定namespace
		proxyResourceNamespaceSGroup.PUT("/:name", proxy.Put)
		proxyResourceNamespaceSGroup.DELETE("/:name", proxy.Delete)

		// 带 namespace 的资源
		proxyResourceNamespaceSGroup.GET("/:namespace/:kind", proxy.List)

	}*/
}
